/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ihc.terminalbanco.gui.events;

import ihc.terminalbanco.gui.panels.AvisoPainel;
import ihc.terminalbanco.gui.panels.ConstructMenusPanels;
import ihc.terminalbanco.gui.panels.InformeAgendaPane;
import ihc.terminalbanco.gui.panels.RotulosInterface;
import ihc.terminalbanco.gui.panels.SaldoPane;
import ihc.terminalbanco.gui.panels.SaqueOutroValorPane;
import ihc.terminalbanco.gui.panels.SegurancaPane;
import ihc.terminalbanco.testDatas.Datas;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * 
 * @author Rafael
 */
public class Events implements ActionListener, RotulosInterface {

        private JPanel menuPrincipalPanel, extratoMenuPanel, servicosMenuPanel,
                demonstrativoMenuPanel, emprestimoMenuPanel, pagamentoMenuPanel,
                saqueMenuPanel,saldoPanel, agendaPanel, informePanel,
                codigoBarrasPanel, saqueOutroValorPane, senhaAdicionalPane,
                bemVindoMenuPanel;
        public static JPanel atualPanel;
        AvisoPainel extratoAvisoPanel, saqueAvisoPanel, confirmarOperacaoPanel;
        JFrame frameInterface;
        Datas coletandoDados;

	public void actionPerformed(ActionEvent e) {
		String nomeEvento = e.getActionCommand();
                /*Início Menu Eventos*/
                if(nomeEvento.contains(saldoString)
                        && this.atualPanel.equals(this.menuPrincipalPanel)){
                    atualizaFrameInterface(this.saldoPanel);
                } else if (nomeEvento.contains(servicosString)
                        && !nomeEvento.contains(outrosServicosString)) {
                    atualizaFrameInterface(this.servicosMenuPanel);
                } else if (nomeEvento.contains(emprestimosString)) {
                    atualizaFrameInterface(this.emprestimoMenuPanel);
                } else if (nomeEvento.contains(pagamentosString)) {
                    atualizaFrameInterface(this.pagamentoMenuPanel);
                } else if (nomeEvento.contains(agendaString)
                        && this.atualPanel.equals(this.menuPrincipalPanel)) {
                    atualizaFrameInterface(agendaPanel);
                } else if (nomeEvento.contains(extratoString)
                        && this.atualPanel.equals(this.menuPrincipalPanel)) {
                    atualizaFrameInterface(extratoMenuPanel);
                } else if (nomeEvento.contains(saqueString)) {
                    atualizaFrameInterface(saqueMenuPanel);
                /*Fim Menu Eventos*/
                /*Início Extrato Eventos*/
                } else if (nomeEvento.contains(complExtratoString)) {
                    atualizaFrameInterface(extratoAvisoPanel);
                } else if (nomeEvento.contains(semanalExtratoString)) {
                    atualizaFrameInterface(extratoAvisoPanel);
                }else if (nomeEvento.contains(quinzenalExtrato)) {
                    atualizaFrameInterface(extratoAvisoPanel);
                } else if (nomeEvento.contains(mensalExtratoString)) {
                    atualizaFrameInterface(extratoAvisoPanel);
                } else if (nomeEvento.contains(totalExtratoString)) {
                    atualizaFrameInterface(extratoAvisoPanel);
                } else if (nomeEvento.contains(emprestimoExtratoString)) {
                    atualizaFrameInterface(extratoAvisoPanel);
                } else if (nomeEvento.contains(saldoMesExtratoString)) {
                    atualizaFrameInterface(extratoAvisoPanel);
                }

                /*Fim Extrato Eventos*/
                /*Início Saque Eventos*/

                else if (nomeEvento.contains(primeiroValorString)) {
                    atualizaFrameInterface(saqueAvisoPanel);
                } else if (nomeEvento.contains(segundoValorString)) {
                    atualizaFrameInterface(saqueAvisoPanel);
                } else if (nomeEvento.contains(terceiroValorString)) {
                    atualizaFrameInterface(saqueAvisoPanel);
                } else if (nomeEvento.contains(quartoValorString)) {
                    atualizaFrameInterface(saqueAvisoPanel);
                } else if (nomeEvento.contains(quintoValorString)) {
                    atualizaFrameInterface(saqueAvisoPanel);
                } else if (nomeEvento.contains(outroValorString)) {
                    atualizaFrameInterface(this.saqueOutroValorPane);
                }

                /*Fim Saque Eventos*/
                /*Início Saque/Segurança Outro Valor Eventos*/
                else if (nomeEvento.contains(anularString)) {
                    atualizaFrameInterface(this.bemVindoMenuPanel);
                } else if  (nomeEvento.contains(confirmarString)
                        && (Events.atualPanel.equals(senhaAdicionalPane))) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                } else if  (nomeEvento.contains(confirmarString)
                        && Events.atualPanel.equals(saqueOutroValorPane)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                }


                /*Fim Saque/Segurança Outro Valor Eventos*/
                /*Início Empréstimos Eventos*/

                 else if (nomeEvento.contains(creditoUmMinutoString)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                } else if (nomeEvento.contains(creditoPessoalString)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                }

                /*Fim Empréstimos Eventos*/
                /*Início Pagamentos Eventos*/

                else if (nomeEvento.contains(codigoBarrasString)) {
                    atualizaFrameInterface(codigoBarrasPanel);
                } else if (nomeEvento.contains(icmsString)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                } else if (nomeEvento.contains(gpsString)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                } else if (nomeEvento.contains(comprovanteString)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                } else if (nomeEvento.contains(extratoString) &&
                        atualPanel.equals(pagamentoMenuPanel)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                }

                /*Fim Pagamentos Eventos*/
                /*Início Serviços Eventos*/

                else if (nomeEvento.contains(outrosServicosString)) {
                    atualizaFrameInterface(this.demonstrativoMenuPanel);
                } else if (nomeEvento.contains(transferenciaString)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                } else if (nomeEvento.contains(ipvaString)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                } else if (nomeEvento.contains(senhasString)) {
                    atualizaFrameInterface(this.senhaAdicionalPane);
                } else if (nomeEvento.contains(recargaString)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                } else if (nomeEvento.contains(agendaString)
                        && this.atualPanel.equals(this.servicosMenuPanel)) {
                    atualizaFrameInterface(this.agendaPanel);
                }

                /*Fim Serviços Eventos*/
                //FIXME Olhar Demonstrativo Imagens
                /*Início Demonstrativos Eventos*/

                else if (nomeEvento.contains(contraChequeString)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                } else if (nomeEvento.contains(outrosDemonstrString)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                } else if (nomeEvento.contains(tarifasString)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                } else if (nomeEvento.contains(complTeleservString)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                } else if (nomeEvento.contains(reciboLicString)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                } else if (nomeEvento.contains(depositoPrazoString)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                } else if (nomeEvento.contains(fundoInvestimentos)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                } else if (nomeEvento.contains(demonstrativosString)) {
                    //FIXME Olhar Demonstrativo Imagens
                    atualizaFrameInterface(this.menuPrincipalPanel);
                }

                /*Fim Demonstrativos Eventos*/
                /*Início Código de Barras Events*/

                else if (nomeEvento.contains(leituraString)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                } else if (nomeEvento.contains(digitacaoString)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                }

                /*Fim  Código de Barras Events*/
                /*Início Agenda Events*/

                else if (nomeEvento.contains(agendamentoString)) {
                    atualizaFrameInterface(this.informePanel);
                } else if (nomeEvento.contains(extratoString) && this.atualPanel.equals(this.agendaPanel)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                } else if (nomeEvento.contains(comprovantesString)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                } else if (nomeEvento.contains(exclusaoString)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                }
                /*Fim Informe Events*/
                /**/
                else if (nomeEvento.contains(confirmarString) && Events.atualPanel.equals(informePanel)) {
                    atualizaFrameInterface(this.confirmarOperacaoPanel);
                }
                /*Fim Informe Events*/
                /*Início Bem Vindo Panel Events*/
                else if (bemVindoMenuPanel.equals(atualPanel)){
                    if(nomeEvento.contains(insiraCartaoString)){
                        atualizaFrameInterface(this.menuPrincipalPanel);
                    }
                }
                /*Fim Bem Vindo Panel Events*/

                /*Início Confirmar Button Events*/

                else if(nomeEvento.contains(confirmarString) && Events.atualPanel.equals(saldoPanel)){
                      atualizaFrameInterface(this.confirmarOperacaoPanel);
                } else if(nomeEvento.contains(confirmarString) && !Events.atualPanel.equals(saldoPanel)){
                      atualizaFrameInterface(this.menuPrincipalPanel);
                }

		//System.out.println("Nome Evento: "+nomeEvento);

	}

    public JPanel getDemonstrativoMenuPanel() {
        return demonstrativoMenuPanel;
    }

    public void setDemonstrativoMenuPanel(JPanel DemonstrativoMenuPanel) {
        this.demonstrativoMenuPanel = DemonstrativoMenuPanel;
    }

    public JPanel getEmprestimoMenuPanel() {
        return emprestimoMenuPanel;
    }

    public void setEmprestimoMenuPanel(JPanel EmprestimoMenuPanel) {
        this.emprestimoMenuPanel = EmprestimoMenuPanel;
    }

    public JPanel getSaqueMenuPanel() {
        return saqueMenuPanel;
    }

    public void setSaqueMenuPanel(JPanel SaqueMenuPanel) {
        this.saqueMenuPanel = SaqueMenuPanel;
    }

    public JPanel getAtualPanel() {
        return atualPanel;
    }

    public void setAtualPanel(JPanel atualPanel) {
        this.atualPanel = atualPanel;
    }

    public JPanel getExtratoMenuPanel() {
        return extratoMenuPanel;
    }

    public void setExtratoMenuPanel(JPanel extratoMenuPanel) {
        this.extratoMenuPanel = extratoMenuPanel;
    }

    public JPanel getMenuPrincipalPanel() {
        return menuPrincipalPanel;
    }

    public void setMenuPrincipalPanel(JPanel menuPrincipalPanel) {
        this.menuPrincipalPanel = menuPrincipalPanel;
    }

    public JPanel getPagamentoMenuPanel() {
        return pagamentoMenuPanel;
    }

    public void setPagamentoMenuPanel(JPanel pagamentoMenuPanel) {
        this.pagamentoMenuPanel = pagamentoMenuPanel;
    }

    public JPanel getServicosMenuPanel() {
        return servicosMenuPanel;
    }

    public void setServicosMenuPanel(JPanel servicosMenuPanel) {
        this.servicosMenuPanel = servicosMenuPanel;
    }

    public JFrame getFrameInterface() {
        return frameInterface;
    }

    public void setFrameInterface(JFrame frameInterface) {
        this.frameInterface = frameInterface;
    }

    public JPanel getAgendaPanel() {
        return agendaPanel;
    }

    public void setAgendaPanel(JPanel agendaPanel) {
        this.agendaPanel = agendaPanel;
    }

    public JPanel getSaldoPanel() {
        return saldoPanel;
    }

    public void setSaldoPanel(JPanel saldoPanel) {
        this.saldoPanel = saldoPanel;
    }

    public AvisoPainel getExtratoAvisoPanel() {
        return extratoAvisoPanel;
    }

    public void setExtratoAvisoPanel(AvisoPainel extratoAvisoPanel) {
        this.extratoAvisoPanel = extratoAvisoPanel;
    }

    public AvisoPainel getSaqueAvisoPanel() {
        return saqueAvisoPanel;
    }

    public void setSaqueAvisoPanel(AvisoPainel saqueAvisoPanel) {
        this.saqueAvisoPanel = saqueAvisoPanel;
    }

    public JPanel getCodigoBarrasPanel() {
        return codigoBarrasPanel;
    }

    public void setCodigoBarrasPanel(JPanel codigoBarrasPanel) {
        this.codigoBarrasPanel = codigoBarrasPanel;
    }

    public JPanel getInformePanel() {
        return informePanel;
    }

    public void setInformePanel(JPanel informePanel) {
        this.informePanel = informePanel;
    }

    public JPanel getSaqueOutroValorPane() {
        return saqueOutroValorPane;
    }

    public void setSaqueOutroValorPane(JPanel saqueOutroValorPane) {
        this.saqueOutroValorPane = saqueOutroValorPane;
    }

    public JPanel getSenhaAdicionalPane() {
        return senhaAdicionalPane;
    }

    public void setSenhaAdicionalPane(JPanel senhaAdicionalPane) {
        this.senhaAdicionalPane = senhaAdicionalPane;
    }

    public JPanel getBemVindoMenuPanel() {
        return bemVindoMenuPanel;
    }

    public void setBemVindoMenuPanel(JPanel bemVindoMenuPanel) {
        this.bemVindoMenuPanel = bemVindoMenuPanel;
    }

    public AvisoPainel getConfirmarOperacaoPanel() {
        return confirmarOperacaoPanel;
    }

    public void setConfirmarOperacaoPanel(AvisoPainel confirmarOperacaoPanel) {
        this.confirmarOperacaoPanel = confirmarOperacaoPanel;
    }

    public void atualizaFrameInterface(JPanel panelSelecionado) {
        this.coletandoDados.incrementNumberOfPanels();
        this.frameInterface.setContentPane(panelSelecionado);
        this.frameInterface.validate();
        Events.atualPanel = panelSelecionado;
        this.frameInterface.setFocusable(true);
    }

    public Events(KeyActions keyActions, Datas coletandoDados) {
        this.coletandoDados = coletandoDados;
        ConstructMenusPanels.actionListener = this;
        ConstructMenusPanels.keyListener = keyActions;
        this.setSaqueMenuPanel(ConstructMenusPanels.constructSaqueMenu());
        this.setServicosMenuPanel(ConstructMenusPanels.constructServicosMenu());
        this.setDemonstrativoMenuPanel(ConstructMenusPanels.constructDemonstrativoMenu());
        this.setEmprestimoMenuPanel(ConstructMenusPanels.constructEmprestimoMenu());
        this.setPagamentoMenuPanel(ConstructMenusPanels.constructPagamentoMenu());
        this.setExtratoMenuPanel(ConstructMenusPanels.constructExtratoMenu());
        this.setAgendaPanel(ConstructMenusPanels.constructAgendaMenu());
        this.setCodigoBarrasPanel(ConstructMenusPanels.constructCodigoBarrasMenu());
        this.setSaqueOutroValorPane(new SaqueOutroValorPane(this, ConstructMenusPanels.fonte));
        this.setSenhaAdicionalPane(new SegurancaPane(this, ConstructMenusPanels.fonte));
        this.informePanel = new InformeAgendaPane(this, ConstructMenusPanels.fonte);
        this.saldoPanel = new SaldoPane(this);

        this.extratoAvisoPanel = new AvisoPainel(this, null, "IMPRIMINDO",
                "Aguarde sua impressão está sendo realizada.");
        this.saqueAvisoPanel = new AvisoPainel(this, null, "\tRETIRE O SEU\n\n                 DINHEIRO",
                "");
        this.confirmarOperacaoPanel = new AvisoPainel(this, null, "Concluído", "Clique em continuar para realizar " +
                "outra operação. \nOu tecle Del para encerrar.");

    }



  	
}
